import java.io.*;

/**
 * Esta clase crea algunas instancias de la clase Empleado y las
 * serializa almacenandolas en un fichero.
 */
 class SaveEmp {
   public static void main(String argv[]) throws Exception {
      // se crean algunos objetos
      Employee pepe = new Employee("Pepe", 27, 3500);
      Employee juan = new Employee("Juan", 29, 3900);
      // se serializan los objetos pepe y juan
      FileOutputStream fos = new FileOutputStream("empl.dat");
      ObjectOutputStream oos = new ObjectOutputStream(fos);
      oos.writeObject(pepe);
      oos.writeObject(juan);
      oos.flush();
   }
}


/**
 * Esta clase invierte el proceso de serialización de los
 * objetos pepe y juan mediante la reconstrucción de su
 * estado que está guardado en un fichero.
 */
 class ReadEmp {
   public static void main(String argv[]) throws Exception{
      //deserializar los objetos pepe y juan
      FileInputStream fis = new FileInputStream("empl.dat");
      ObjectInputStream ois = new ObjectInputStream(fis);
      Employee pepe = (Employee) ois.readObject();
      Employee juan = (Employee) ois.readObject();
      // print the records after reconstruction of state
      pepe.show();
      juan.show();
   }
}


/**
 * Una clase serializable para representar empleados
 */
 class Employee implements Serializable {
   String name;
   int age;
   int salary;

   public Employee(String name, int age, int salary) {
     this.name = name;
     this.age = age;
     this.salary = salary;
   }

   public void show() {
     System.out.println("Empleado: " +name+ " Edad: " +age+ " Salario: "+salary);
   }
}





/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

    //
//  Agenda.java
//  Copyright (c) 1996, Agustin Froufe
//  Todos los derechos reservados.
//
//  No se asume ninguna  responsabilidad por el  uso o  alteracion  de este
//  software.  Este software se proporciona COMO ES, sin garantia de ningun
//  tipo de su funcionamiento y en ningun caso sera el autor responsable de
//  daños o perjuicios que se deriven del mal uso del software,  aun cuando
//  este haya sido notificado de la posibilidad de dicho daño.
//
//   Compilador: javac 1.0
//        Autor: Agustin Froufe
//     Creacion: 06-Oct-1996  09:48:03
//
//--------------------------------------------------------------------------
//  Esta informacion no es necesariamente definitiva y esta sujeta a cambios
//  que pueden ser incorporados en cualquier momento, sin avisar.
//--------------------------------------------------------------------------

/*
import java.io.*;

class Direccion {
    protected String nombre;
    protected String telefono;
    protected String direccion;

    Direccion( String n,String t,String d ) {
        nombre = n;
        telefono = t;
        direccion = d;
        }

    public String getNombre() {
        return( nombre );
        }

    public String getTelefono() {
        return( telefono );
        }

    public String getDireccion() {
        return( direccion );
        }

    public void print() {
        System.out.println( nombre+"\n  "+telefono+"\n  "+
            direccion );
        }
    }


class DireccionArray {
    protected Direccion lista[];
    final int max = 128;
    int tamano = 0;

    DireccionArray() {
        lista = new Direccion[max];
        }

    void printDireccion( String nombre ) {
        for(int i=0; i < tamano; i++ )
            {
            if( lista[i].getNombre().indexOf( nombre ) != -1 )
                lista[i].print();
            }
        }

    void addDireccion( Direccion direccion ) {
        if( tamano == max )
            System.exit( 1 );
        lista[tamano++] = direccion;
        }
    }


 class Agenda {
    DireccionArray lista;
    FileInputStream agFichero;
    final int longLinea = 32;

    public static void main( String argv[] ) {
        Agenda agenda = new Agenda();
        agenda.bucle();
        }

    Agenda() {
        lista = cargaDirecciones();
        }

    void bucle() {
        String nombre;

        System.out.println( "Introduzca un nombre o <Enter>" );
        try {
            while( !"".equals( nombre = leeEntrada( System.in ) ) )
                {
                lista.printDireccion( nombre );
                System.out.println(
                    "Introduzca un nombre o <Enter>" );
                }
        } catch( Exception e ) {
            ;
            }
        }

    String leeEntrada( InputStream entrada ) throws IOException
    {
        byte chars[] = new byte[longLinea];
        int contador = 0;

        while( contador < longLinea &&
            ( chars[contador++] = (byte)entrada.read() ) != '\n' )
            if( chars[contador-1] == -1 )
                return( null );

        return( new String( chars,0,0,contador-1 ) );
    }

    Direccion cargaDireccion() throws IOException {
        String nombre = leeEntrada( agFichero );
        if( nombre == null )
            return( null );

        String telefono = leeEntrada( agFichero );
        String direccion = leeEntrada( agFichero ) + "\n  " +
            leeEntrada( agFichero ) + "\n  " +
            leeEntrada( agFichero );

        return( new Direccion( nombre,telefono,direccion ) );
        }

    DireccionArray cargaDirecciones() {
        DireccionArray lista = new DireccionArray();
        Direccion nuevaDireccion;

        try
        {
            agFichero = new FileInputStream( "agenda" );
        } 
        catch( FileNotFoundException e )
        {
            System.out.println( "No hay fichero de Agenda" );
            return( lista );
        }

        while( true ) {
            try {
                nuevaDireccion = cargaDireccion();
                if( nuevaDireccion == null )
                    return( lista );
                lista.addDireccion( nuevaDireccion );
            } catch( Exception e ) {
                System.out.println( "Error cargando Agenda " );
                System.exit( 1 );
                }
            }
        }
    }

//-------------------------------------------- Final del fichero Agenda.java

}
*/